#ifndef __IM_MAIN_LOOP_UNIX_H__
#define __IM_MAIN_LOOP_UNIX_H__

#include <im_main_loop.h>
/**
 * @defgroup IMMainLoopUnix
 * @ingroup PrivateIMBus
 * @{
 */

/** @struct IMMainLoopUnix
 *  @brief It's a real IMMainLoop implementation for unix environment.
 */

IM_BEGIN_DECLS

#define IM_MAIN_LOOP_UNIX(p)           (IM_TYPE_INSTANCE_CHECK_CAST((p),IM_TYPE_MAIN_LOOP_UNIX,IMMainLoopUnix))
#define IM_CONST_MAIN_LOOP_UNIX(p)     (IM_TYPE_INSTANCE_CHECK_CAST_CONST((p),IM_TYPE_MAIN_LOOP_UNIX,IMMainLoopUnix))
#define IM_MAIN_LOOP_UNIX_CLASS(c)     (IM_TYPE_CLASS_CHECK_CAST((c),IM_TYPE_MAIN_LOOP_UNIX,IMMainLoopUnixClass))
#define IM_IS_MAIN_LOOP_UNIX(p)        (IM_TYPE_INSTANCE_CHECK_TYPE((p),IM_TYPE_MAIN_LOOP_UNIX))
#define IM_IS_MAIN_LOOP_UNIX_CLASS(c)  (IM_TYPE_CLASS_CHECK_TYPE((c),IM_TYPE_MAIN_LOOP_UNIX))
#define IM_MAIN_LOOP_UNIX_GET_CLASS(p) (IM_TYPE_INSTANCE_GET_CLASS_CAST((p),IM_TYPE_MAIN_LOOP_UNIX,IMMainLoopUnixClass))

typedef struct _IMMainLoopUnix         IMMainLoopUnix;
typedef struct _IMMainLoopUnixClass    IMMainLoopUnixClass;

/**
 * @brief Create a new IMMainLoopUnix object.
 *
 * The returned IMMainLoop object is owned by caller, so it
 * must be destroyed by calling im_object_unref() afterwards.
 */
IMMainLoop*     im_main_loop_unix_new      ();

IM_END_DECLS
/** @} */

#endif
/*
vi:ts=4:nowrap:ai:expandtab
*/
